import { get } from './base'

// 通过singer获取到的songs的url是空的，因此需要自行请求url进行添加,参数是一个歌曲列表
export function processSongs (songs) {
  // 判断该歌手的歌曲列表是否为空，返回一个promise的resolve，对应下面
  if (!songs.length) {
    return Promise.resolve(songs)
  }
  // 这个接口返回的是一个url
  return get('/api/getSongsUrl', {
    // 拿到歌曲列表每首歌的id
    mid: songs.map((song) => {
      return song.mid
    })
  }).then((res) => {
    // 得到一个map，存储每个song.mid对应的url
    const map = res.map
    // 为每个song添加url,但是url中必须有关键字‘vkey'才能播放，这是因为第三方服务的加密处理，因此需要获取所有含vkey的
    return songs.map((song) => {
      song.url = map[song.mid]
      return song
    }).filter((song) => {
      return song.url.indexOf('vkey') > -1
    })
  })
}

const lyricMap = {}
// 根据歌曲获取歌词
export function getLyric (song) {
  if (song.lyric) {
    return Promise.resolve(song.lyric)
  }
  const mid = song.mid
  const lyric = lyricMap[mid]
  if (lyric) {
    return Promise.resolve(song.lyric)
  }
  return get('/api/getLyric', { mid })
    .then((res) => {
      const lyric = res ? res.lyric : '[00:00:00]该歌曲暂时无法获取歌词'
      lyricMap[mid] = lyric
      return lyric
    })
}
